這邊讓我們的待辦事項清單應用程式有一個資料庫結構,提供我們要使用的資料結構並儲存。
首先Settings裡面,點選Technical->Database Structure->Models,然後點選new,
填寫基本資料:
- Model Description:To-do Item
- Model:x_todo_item
底下Fields,點選Add a line,需要去新增屬性:
- Field Name: x_is_done
- Field Label: Is Done?
- Field Type: boolean
如果不想每個人都可以選擇,這邊就可以去限制,一樣點選Add a line:
- Field Name: x_work_team_ids
- Field Label: Work Team
- Field Type: many2many
- Related Model: res.partner
- Domain: [('x_is_work_team', '=', True)]
輸入跟儲存內容後,就得到資料庫,接下來就要讓使用者可以存取。
Technical->User Interface->Menu Items
- Menu: To-do
- Action: 選擇 ir.actions.act_window,旁邊的下拉式選單中點Create and Edit:
-- Create: Action form
-- Action Name: To-do Items
-- External ID Object: x_todo_item (目標model的名稱)
儲存後,去看使用者介面卻沒有出現,就算重新整理也沒有,why?
因為目前使用者沒有權限去存取,之後就是要去配置使用者的權限。
使用者的權限會根據所屬的群組,我們需要建立一個群組,指派給有權存取的使用者:
Settings裡,Users & Companies->Group,新增以下:
- Name: To-Do User
- 下方Inherited,點選Add a line:
-- 選擇User types / Internal User
Tips:如果需要給予特定Model存取權限,最快的方式,就是使用群組下方的Access Rights,直接輸入Name跟Model選擇To-do Item,後面新增,給予建立、刪除、讀取、寫入的存取權,授予相應的權限。
建立完一個群組,指派一位管理員來管理:
在Users & Companies->Users選擇Mitchell Admin,在Access Rights裡面最下面會有一個To-do User,勾選起來,在待辦事項清單應用程式可以看到。
預設情況下,每個使用者都能讀取Model的所有資料,但在我們待辦事項清單應用程式中,不應該能看到其他人的待辦事項,所以可以根據要求設定規則。
那要如何設定呢?
- Settings->Technical->Security->Record,新增規則:
- Name: To-do User Own Items.
- Model:選擇剛剛一開始創建的Model(To-do Item)
- Access Rights: 勾選所有
- Rule Definition(Domain Filter): [('create_uid', '=', user.id)]
- Groups: add a line 選擇To-do User
規則這樣就設定完成了,讓每個人都只能看到自己的待辦事項。
我們做完待辦事項的model,最後就是要來建立View,讓使用者瀏覽現有紀錄。
回到Settings->Technical->User Interface->Views:
- View Name: To-do List View
- View Type: Tree
- Model: x_todo_item
- Architecture: 新增XML code
<tree>
<field name="x_name" />
<field name="x_is_done" />
</tree>
另外也可以變成表格顯示:
回上一頁,新增一個Views:
- View Name: To-do Form View.
- View Type: Form.
- Model: x_todo_item.
- Architecture: 新增XML code
<form>
<group>
<field name="x_name" />
<field name="x_is_done" />
<field name="x_work_team_ids"
widget="many2many_tags"
context="{'default_x_is_work_team': True}" />
</group>
</form>
也可以讓搜尋框用特定自段搜尋。
再回上一頁,新增一個Views:
<search>
<filter name="item_not_done"
string="Not Done"
domain="[('x_is_done', '=', False)]" />
</search>
這樣我們的待辦事項應用程式就看起來完整許多。